url配置
# 路由分发配置url url(r'^up_count/',views.up_count),url(r'^down_count/',views.down_count),
视图函数处理
点赞
def up_count(request): '''点赞函数,禁止同一用户点赞多次''' user_id = request.user.nid #当前用户的ID article_id = request.POST.get("article_id") # 获取到当前的文章ID print("===================点赞") pollResponse = { "state": True} #初始变量 if models.ArticleUpDown.objects.filter(user_id=user_id,article_id=article_id): #判断是否为同一用户点赞 print("======去你大爷的,想点几次") pollResponse["state"]=False else: with transaction.atomic(): models.ArticleUpDown.objects.create(user_id=user_id,article_id=article_id) #创建一个新的用户 models.Article.objects.filter(nid=article_id).update(up_count=F("up_count")+1) #给文章的点赞数+1 return HttpResponse(json.dumps(pollResponse))
取消点赞
def down_count(request): '''点赞函数,禁止同一用户点赞多次''' user_id = request.user.nid # 当前用户的ID article_id = request.POST.get("article_id") # 获取到当前的文章ID downResponse = { "state": True} if models.Article.objects.filter(nid=article_id,user_id=user_id).first(): #判断是否为同一用户点赞 downResponse["state"]=False else: with transaction.atomic(): print("=========可以到这里") models.ArticleUpDown.objects.create(nid=user_id,article_id=article_id) #创建一个新的用户 models.Article.objects.filter(nid=article_id).update(down_count=F("down_count")+1) #给文章的点赞数+1 print("===============>",downResponse) return HttpResponse(json.dumps(downResponse))
前端点赞块
{# 点赞块#}{ { article_obj.down_count }}{ { article_obj.up_count }}
js发送请求代码:
$(".diggit").click(function () { if ($(".infos").attr("user_username")){ $.ajax({ url: "/blog/up_count/", type: "POST", data: { csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val(), article_id:{ { article_obj.nid }} }, success: function (data) { data = JSON.parse(data); if (data["state"]) { var val = parseInt($("#digg_count").html()) + 1; $("#digg_count").html(val) } else { $(".diggnum_error").html("请不要重复点赞").css("color", "red"); setTimeout(foo, 3000) } } }) }else{ location.href="/login/" } }); $(".buryit").click(function () { if ($(".infos").attr("user_username")){ $.ajax({ url: "/blog/down_count/", type: "POST", data: { csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val(), article_id:{ { article_obj.nid }} }, success: function (data) { data = JSON.parse(data); {# console.log(data);#} if (data["state"]) { var val = parseInt($("#bury_count").html()) + 1; $("#bury_count").html(val) } else { $(".diggnum_error").html("去你大爷的,").css("color", "red") setTimeout(foo, 3000) } } }) }else{ location.href="/login/" } });